package com.tedu.api.io;
import org.junit.Test;

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.logging.Filter;

/**
 *   listFiles(接口：Filter)   重载
 *   作用：按照“指定规则”获取对应文件/文件夹
 *
 *   Filter接口---专门给listFiles方法提供：过滤文件夹或者文件【指定规则】
 *   accept()从每个File的文件中判断，拿到【具体逻辑】的文件夹
 *
 * 需求：获取  API  项目下  所有子项【文件和文件夹】 获取src文件
 *           指定规则：验证时s开头就是src
 *   作业2：FileFilter接口按照  匿名内部类  方法实现，功能加上需求
 */
public class FilterAPI {


        //主方法： ./路径指定根级
        public static  void main(String[] args) throws IOException {
   //1.创建File文件夹：获取当前API文件夹  路径：./API
            File file =new File("."+File.separator+"API");
            System.out.println(file.getCanonicalPath());


            FileFilter  ff=new FileFilter(){
                public boolean accept(File pathname){
                    String name= pathname.getName();
                    System.out.println("过滤出来文件夹名字是："+name);
                    return name.startsWith("t");
                }
            };

            //2.获取文件夹下所有“子项：文件夹下包括所有文件和文件夹”
            File[] subs=file.listFiles(ff);
            //3.打印子项下的所有东西
            for (int i=0;i< subs.length;i++){
                System.out.println("所有文件和文件夹的名："+subs[i].getName());
            }

        }
   /* @Test
    public void test01() throws IOException {
        File file =new File("."+File.separator);
        System.out.println(file.getCanonicalPath());
    }*/

    }

    class MyFilter implements FileFilter {
        //accept(File pathname)
        // 传入参数：File pathname----获取有需要 过滤文件
        //作用：添加过滤条件，将获取所有需要过滤文件，
        //   逐一过滤，【条件：规则---开发者指定】，条件满足返回true


        public boolean accept(File pathname) {
            //添加规则：文件或者文件夹如果是s开头---过滤
            //①：获取所有文件文件夹的名字
            String name= pathname.getName(); //获取文件夹： src 字符串
            //②：过滤以 s 开头的文件夹
            // 字符串：startWith()返回值：boolean
            //作用：验证字符串字符是不是匹配字符。如果匹配：jrue
            //③：打印过滤出现字符串
            System.out.println("过滤出来文件夹名字是："+name);
            return name.startsWith("s");
        }
    }


